/*
*	Ivan Concua 12352
*	Roberto Andrino 12413
*	Algoritmos y estructuras de datos
*	DoublyLinkedNode.java
*	Esta clase fue tomada de los ejemplos de Blackboard.
*	Se agrego los metodos necesarios para que funcionara
*	DoublyLinkedList.java, que son muy similares a los 
*	metodos de Node.java
*/

public class DoublyLinkedNode<E>
{
	protected E data;
	protected DoublyLinkedNode<E> nextElement;
	protected DoublyLinkedNode<E> previousElement;

	public DoublyLinkedNode(E v, DoublyLinkedNode<E> next, DoublyLinkedNode<E> previous)
	// constructor que inicializa a nextElement y a previousElement para crear los Nodos
	{
		data = v;
		nextElement = next;
		
		if (nextElement != null)
			nextElement.previousElement = this;
			
		previousElement = previous;
		
		if (previousElement != null)
			previousElement.nextElement = this;
	}

	public DoublyLinkedNode(E v)
	// post: constructs a single element
	{
		this(v,null,null);
	}
	
	public DoublyLinkedNode<E> previous()
	// post: regresa el valor de previousElement
	{
		return previousElement;
	}
	
	public void setNext(DoublyLinkedNode<E> next)
	// post: sets reference to new next value
	{
		nextElement = next;
	}
	
	public E value()
   // post: returns value associated with this element
   {
      return data;
   }
}
